**One-sided Truth Commissions and Effects on Public Support and Reconciliation
**Lesley-Ann Daniels
**Human Rights Review 2024

**DO FILE 
*run on stata 17

********************************************************************************
**DESCRIPTIVES

*Table A2 Appendix: summary statistics
sum support_com com_recon i.primejustice i.victims_equal2cdk i.linz_britdk i.victimdk i.female i.age4c i.edu4c i.income4c i.linz3cdk


*Table A3 Appendix: balance checks
ttest victims_equal2cdk, by(primejustice)
ttest linz_britdk, by(primejustice)
ttest victimdk, by(primejustice)
ttest female, by(primejustice)
ttest age4c, by(primejustice)
ttest edu4c, by(primejustice)
ttest income4c, by(primejustice)
ttest linz3cdk, by(primejustice)

********************************************************************************
**ANALYSIS

**SURVEY SET
svyset _n [pweight = weight_AGR]

***DV1 Support for TC FIGURE 1
svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
estimates store general

*coefficient plot with just primes 
coefplot 	(general, label(Main results))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

***DV2 societal reconciliation FIGURE 2
svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
estimates store general

*coefficient plot with just primes 
coefplot 	(general, label(Main results))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 
			
********
*Table A4 Appendix: OLS regressions 
eststo, title("Model 1"): quietly svy: reg support_com i.primejustice 
eststo, title("Model 2"): quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
eststo, title("Model 3"): quietly svy: reg com_recon i.primejustice 
eststo, title("Model 4"): quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
estout, cells(b(star  fmt(%9.3f)) se(par fmt(2))) label varlabels(_cons Constant) title(TRC experiment) stats(N  r2, label(Observations R2)) starlevels(* 0.05 ** 0.01 *** 0.001)
eststo clear


************************
*MECHANISMS CONDITIONAL EFFECTS

***Plotting conditional marginal effects on 2-level all victims equal, i.e. measure of fairness norm

*DV1 Support for TC
*Coefficient plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 1
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victims equal))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
*DV2 societal reconciliation
*Coefficient plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 1
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victims equal))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

*************
*ALTERNATIVE EXPLANATIONS

***Plotting conditional marginal effects on 2-level linz_brit identity (i.e. those most discriminated)

*DV1 Support for TC
*Coefficient plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c  if linz_britdk == 1
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c  if linz_britdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(British identity))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
*DV2 societal reconciliation
*Coefficient plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c if linz_britdk == 1
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c if linz_britdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(British identity))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
***Plotting conditional marginal effects on 2-level VICTIMIZATION

*DV1 Support for TC
*Coefficient plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 1
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

	
*DV2 societal reconciliation
*Coefficient plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 1
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			

*********************
*ADDITIONAL RESULTS FOR APPENDIX


**FIGURES

*FIGURES A1 - A2
*MARGINAL EFFECTS SHOWING ABSOLUTE VALUES

***DV1 Support for TC FIGURE A1
svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
margins i.primejustice, post
est store general

*Marginal plot with just primes 
coefplot 	(general, label(Marginal results))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

***DV2 societal reconciliation FIGURE A2
svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk
margins i.primejustice, post
est store general

*Marginal plot with just primes 
coefplot 	(general, label(Marginal results))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
			
**SUB-SET PLOTS

*MECHANISM: ALL VICTIMS EQUAL (FAIRNESS)

*DV1 Support for TC FIGURE A3
*Marginal plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(Victims equal))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
*DV2 societal reconciliation FIGURE A4
*Marginal plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victims_equal2cdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(Victims equal))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 


*ALTERNATIVE EXPLANATION: BRITISH-IDENTIFIERS

*DV1 Support for TC FIGURE A5
*Marginal plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c  if linz_britdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c  if linz_britdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(British identity))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
*DV2 societal reconciliation FIGURE A6
*Marginal plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c if linz_britdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c if linz_britdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(British identity))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

			
*ALTERNATIVE EXPLANATION: VICTIMIZATION

*DV1 Support for TC FIGURE A7
*Marginal plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

	
*DV2 societal reconciliation FIGURE A8
*Marginal plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 1
margins i.primejustice, post
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if victimdk == 0
margins i.primejustice, post
estimates store B

*Marginal plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(50, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 

		
			
*ROBUSTNESS CHECKS

***Plotting conditional marginal effects on 2-level VICTIM OF PARAMILITARIES, i.e. those who lose out with one-sided TC

*DV1 Support for TC FIGURE A9
*Coefficient plots
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if para_victim == 1
estimates store A
quietly svy: reg support_com i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if para_victim == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Support Truth Commission) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 


*DV2 societal reconciliation FIGURE A10
*Coefficient plots
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if para_victim == 1
estimates store A
quietly svy: reg com_recon i.primejustice i.female i.age4c i.edu4c i.income4c i.linz3cdk if para_victim == 0
estimates store B

*coefficient plot with just primes 
coefplot 	(A , label(Victim))(B,label(Other))   ///
			, keep(*.primejustice) xline(0, lcolor(gs10)) base  ///
			msize(vsmall) norecycle ///
			legend(rows(1) colfirst region(lwidth(none)) size(small) rowgap(minuscule) bmargin(minuscule) ) ///
			plotregion(margin(vsmall)) plotregion(margin(none)) graphregion(fcolor(white)) ///
			ysize(13) xsize(10)  subtitle(Truth Commission aids reconciliation) ///
			ylabel(, labsize(small)) xlabel(, labsize(small)) 
			/// 
